using System;
using System.Data;
using System.Data.SqlClient;
using SystemFrameworks;
using Common;
using DataAccess;
using Microsoft.ApplicationBlocks.Data;

namespace BusinessRules
{
    public class SigEntidadesProgramas
    {
        private const String SPZ_ID_PARAM = "@SPZ_ID";
        private const String ENT_ID_PARAM = "@ENT_ID";
        
        private string _CadenaConexion;
        public string CadenaConexion
        {
            get { return _CadenaConexion; }
            set { _CadenaConexion = value; }
        }
        public SigEntidadesProgramas(string strCadenaConecxion)
        {
            CadenaConexion = strCadenaConecxion;
        }

        public SigEntidadesProgramasData ConsultarSigEntidadesProgramasSPZ(string decSpzId)
        {
            SqlParameter param1 = new SqlParameter(SPZ_ID_PARAM, decSpzId);
            SqlParameter[] parameters = { param1 };
            SigEntidadesProgramasData objSigEntidadesProgramasData = new SigEntidadesProgramasData();
            Microsoft.ApplicationBlocks.Data.SqlHelper.ExecuteDataTable(CadenaConexion, CommandType.StoredProcedure, "SIG_ENTIDADES_PROGRAMAS_SPZ_ID", objSigEntidadesProgramasData, parameters);
            return objSigEntidadesProgramasData;
        }

        public SigEntidadesProgramasData BuscarSigEntidadesProgramasTodos()
        {
            
            SigEntidadesProgramasData objSigEntidadesProgramasData = new SigEntidadesProgramasData();
            Microsoft.ApplicationBlocks.Data.SqlHelper.ExecuteDataTable(CadenaConexion, CommandType.StoredProcedure, "PAS_BUSCAR_SIG_ENTIDADES", objSigEntidadesProgramasData);
            return objSigEntidadesProgramasData;
        }

        public decimal AdicionarSigEntidadesProgramas(SigEntidadesProgramasData datos, params SqlTransaction[] objTransaction)
        {
            decimal decIdentificador = 0;
            try
            {
                foreach (DataRow row in datos.Rows)
                {
                    SqlParameter param1 = new SqlParameter(SPZ_ID_PARAM, row[SigEntidadesProgramasData.SPZ_ID_FIELD]);
                    SqlParameter param2 = new SqlParameter(ENT_ID_PARAM, row[SigEntidadesProgramasData.ENT_ID_FIELD]);

                    SqlParameter[] parameters = {
                                                    param1, param2
                                                };

                    if (objTransaction.Length == 0)
                    {
                        SqlHelper.ExecuteNonQuery(CadenaConexion, CommandType.StoredProcedure,
                                                  "PAS_ADICIONAR_SIG_ENTIDADES_PROGRAMAS", parameters);
                    }
                    else
                    {
                        SqlHelper.ExecuteNonQuery(objTransaction[0], CommandType.StoredProcedure,
                                                  "PAS_ADICIONAR_SIG_ENTIDADES_PROGRAMAS", parameters);
                    }

                    decIdentificador = decimal.Parse(param1.Value.ToString());
                }
                return (decIdentificador);

            }
            catch (SqlException sqlEx)
            {
                throw new ApplicationExceptionManager(Utilidad.DisplaySqlErrors(sqlEx, "PAS_ADICIONAR_SIG_ENTIDADES_PROGRAMAS"), sqlEx);
            }
            catch (Exception ex)
            {
                throw new ApplicationExceptionManager(Utilidad.TraerMensaje("gmsgErrorInsertar", this.GetType().FullName), ex);
            }

        }

        public void ElimianarSigEntidadesProgramasSPZ(string decSpzId, params SqlTransaction[] objTransaction)
        {
            SqlParameter param1 = new SqlParameter(SPZ_ID_PARAM, decSpzId);
            SqlParameter[] parameters = { param1 };
            SigEntidadesProgramasData objSigEntidadesProgramasData = new SigEntidadesProgramasData();

            if (objTransaction.Length == 0)
            {
                SqlHelper.ExecuteNonQuery(CadenaConexion, CommandType.StoredProcedure,
                                      "PAS_ELIMINAR_SIG_ENTIDADES_PROGRAMAS_SPZ_ID", parameters);
            }
            else
            {
                SqlHelper.ExecuteNonQuery(objTransaction[0], CommandType.StoredProcedure,
                                      "PAS_ELIMINAR_SIG_ENTIDADES_PROGRAMAS_SPZ_ID", parameters);
            }

            
            
        }



    }
}